\hypertarget{index_autotoc_md1}{}\doxysection{A\+B\+O\+U\+T L\+I\+B\+S\+C\+HC}\label{index_autotoc_md1}
libschc is a C implementation of the Static Context Header Compression, drafted by the I\+E\+TF. It is a header compression technique, used in Low Power Wide Area Networks in order to enable tiny low-\/power microcontrollers to have an end-\/to-\/end I\+Pv6 connection. This repository contains both the compression as well as the fragmentation mechanism. For further information related to S\+C\+HC, see \href{https://datatracker.ietf.org/doc/draft-ietf-lpwan-ipv6-static-context-hc/}{\texttt{ https\+://datatracker.\+ietf.\+org/doc/draft-\/ietf-\/lpwan-\/ipv6-\/static-\/context-\/hc/}}.

See the \href{/docs}{\texttt{ docs}} for more information on the implemenation and configuration.\hypertarget{index_autotoc_md2}{}\doxysubsection{A\+C\+K\+N\+O\+W\+L\+E\+D\+G\+E\+M\+E\+NT}\label{index_autotoc_md2}
libschc has been developed partially with the support of V\+L\+A\+IO, F\+WO and imec. It is also part of the IoT middleware stack, being developed for the European Union’s Horizon 2020 Port\+Forward project, where, amongst others, Lw\+M2M will be integrated with this library in order to deliver open standards-\/based sensor-\/\+Cloud connectivity.\hypertarget{index_autotoc_md3}{}\doxysection{L\+I\+M\+I\+T\+A\+T\+I\+O\+NS}\label{index_autotoc_md3}
As this implementation is work in progress, there are some limitations you should keep in mind.

The library has been designed in such a way that it can be used on top of a constrained device, as well as on a more powerful server side device. As a consequence, memory allocation and memory intensive calculations are avoided. Fixed point arithmetic is used for 8-\/bit mircoprocessors, however some optimizations are possible. Consequently, the rules are constructed of 8-\/bit arrays, available on all devices. Dynamic memory allocation is omitted as memory fragmentation would occur and performance would suffer, since many M\+C\+Us are not equipped with Memory Management Units (M\+MU). For the network gateway however, dynamic memory allocation should be implemented for several functions to avoid large memory pre-\/allocation.

The current implementation is based on draft-\/ietf-\/lpwan-\/ipv6-\/static-\/context-\/hc-\/18 (\href{https://datatracker.ietf.org/doc/draft-ietf-lpwan-ipv6-static-context-hc/18/}{\texttt{ https\+://datatracker.\+ietf.\+org/doc/draft-\/ietf-\/lpwan-\/ipv6-\/static-\/context-\/hc/18/}}), some naming conventions are therefore not in line with the current specification.

Please keep in mind that the library works, but is still very experimental!\hypertarget{index_autotoc_md4}{}\doxysection{E\+X\+A\+M\+P\+L\+ES}\label{index_autotoc_md4}
In the folder examples are both basic compression and fragmentation examples provided. The fragmentation example makes use of a timer library and should be adapted to your platform (see \href{/docs\#fragmentation}{\texttt{ Fragmentation}} and the examples folder).

Please read the \href{/examples\#fragmentation}{\texttt{ example docs}} carefully, as no proper fragmentation example for a single cli has been provided so far.\hypertarget{index_autotoc_md5}{}\doxysection{L\+I\+C\+E\+N\+SE}\label{index_autotoc_md5}
libschc has dual licenses. The G\+NU General Public License, Version 3 (the \char`\"{}\+License\char`\"{}) is the open source license\+: You may not use these files except in compliance with the License. You may obtain a copy of the License at \href{https://www.gnu.org/licenses/gpl-3.0.nl.html}{\texttt{ https\+://www.\+gnu.\+org/licenses/gpl-\/3.\+0.\+nl.\+html}}

See the License for the specific language governing permissions and limitations under the License.

For non-\/open source licenses, please contact Ilse Bracke \href{mailto:ilse.bracke@imec.be}{\texttt{ ilse.\+bracke@imec.\+be}}.

© Copyright 2018-\/2019, Bart Moons \href{mailto:bamoons.moons@ugent.be}{\texttt{ bamoons.\+moons@ugent.\+be}}, imec and Ghent University 